package net.ermannofranco.xml;

import java.util.Enumeration;
import java.util.Iterator;
import java.util.Map;

/** Enumerazione che fornisce la coppia nome="valore"
 * 
 * @author ermanno (ermanno.franco@gmail.com)
 *
 */
public final class XmlEnumeration implements Enumeration<String>,
		java.io.Serializable {

	private static final long serialVersionUID = 7983927085064580806L;
	/** Repository delle coppie */
	private Map<String, String> tavola;
	/** Enumerazione dei nomi */
	private Iterator<String> it;

	/**
	 * Costruttore che accetta un oggetto properties
	 * 
	 * @param table
	 *            l'insieme degli attributi
	 */
	protected XmlEnumeration(Map<String, String> table) {
		this.tavola = table;
		it = tavola.keySet().iterator();
	}

	/**
	 * sovrascrive il metodo classico
	 * 
	 * @return true se ci sono ancora elementi
	 */
	public boolean hasMoreElements() {
		return it.hasNext();
	}

	/**
	 * restituisce una coppia nome=valore
	 * 
	 * @return una coppia nome=valore
	 */
	public String nextElement() {
		String chiave = it.next();
		StringBuilder sb = new StringBuilder(chiave);
		sb.append("=\"")
				.append(Static.toXmlString((String) tavola.get(chiave)))
				.append("\"");
		return sb.toString();

	}

}